Computer resource management is a core function for managing computer systems. Important goals of computer resource management are optimization of performance realized from computer resources and minimization of computer resources provisioned.
Among computer resources managed is memory, including random access volatile memory (RAM). Virtual memory is an approach used to maximize memory usage and minimize amount of memory provisioned for a computer system. Specifically, virtual memory is a memory management technique that emulates a memory as a memory having a larger physical size than the actual physical size of the memory. Memory is accessed by computer processes as a contiguous address space, each address referencing an unit of a memory, such as a memory word, memory line, memory segment, or memory block. In virtual memory, the virtual address space is much larger than the physical address space of the memory.
One way to implement virtual memory for a memory is to supplement the memory being virtualized with a different tier of memory. The virtualized memory and the other supplemental memory are together emulated as one memory addressable within a virtual address space. For example, to implement virtual memory for RAM, a temporary file on disk is used to supplement the RAM. The RAM and temporary file are emulated as RAM having a much larger virtual address space than the physical address space of the RAM.
Like RAM, flash memory is another computer resource to manage. Discussed herein are techniques for virtualization of flash memory.